package view
{
	import flash.events.Event;
	
	import model.Enseignant;
	import model.Utilisateur;
	import mx.controls.Alert;
	import model.proxy.LoginProxy;
	import model.proxy.ProfilEnseignantProxy;
	
	import org.puremvc.as3.interfaces.IMediator;
	import org.puremvc.as3.interfaces.INotification;
	import org.puremvc.as3.patterns.mediator.Mediator;
	
	import view.components.ProfilEnseignantPanel;

	
	public class ProfilEnseignantPanelMediator extends Mediator implements IMediator 
	{ 
		
		public static const NAME : String = 'ProfilEnseignantPanelMediator'; 
			
		/** 
		 * Constructor 
		 * Listen event of the component to send notification 
		 */ 
		 public function ProfilEnseignantPanelMediator(viewComponent : ProfilEnseignantPanel) 
		 { 
		 	super(NAME, viewComponent);
		 	viewComponent.addEventListener(ProfilEnseignantPanel.VALIDER_MODIF_INFORMATIONS, validerModifInformationsNotification);
		 }  	 

		 private function validerModifInformationsNotification(event : Event=null):void 
		 { 
			 var user:Utilisateur = (LoginProxy.user as Utilisateur);
			 var prof:Enseignant = user.aEnseignant;
			 prof.nom = profilEnseignantPanel.nom.text;
			 prof.prenom = profilEnseignantPanel.prenom.text;
			 prof.adr_1 = profilEnseignantPanel.adr_1.text;
			 prof.adr_2 = profilEnseignantPanel.adr_2.text;
			 prof.cp = profilEnseignantPanel.cp.text;
			 prof.ville = profilEnseignantPanel.ville.text;
			 prof.pays = profilEnseignantPanel.pays.text;
			 user.login = profilEnseignantPanel.login.text;
			 user.mdp = profilEnseignantPanel.mdp.text; 
			 sendNotification(ProfilEnseignantPanel.VALIDER_MODIF_INFORMATIONS, user);
		 } 
		 
		 /** 
		 * List of the notifications catched by this mediator 
		 */ 
		 override public function listNotificationInterests():Array 
		 { 
		 	return [ 
		 			 ProfilEnseignantProxy.UTILISATEUR_MODIFIE
		 		   ]; 
		 } 
		 
		 /** 
		 * Actions done when a notifications is catched 
		 */ 
		 override public function handleNotification(note : INotification):void 
		 { 
			 switch (note.getName()) 
			 { 
			 	case ProfilEnseignantProxy.UTILISATEUR_MODIFIE:
			 	{
			 		profilEnseignantPanel.nom.text = (((note.getBody() as Utilisateur).aEnseignant as Enseignant).nom);
			 		profilEnseignantPanel.prenom.text = (((note.getBody() as Utilisateur).aEnseignant as Enseignant).prenom);
			 		profilEnseignantPanel.adr_1.text = (((note.getBody() as Utilisateur).aEnseignant as Enseignant).adr_1);
			 		profilEnseignantPanel.adr_2.text = (((note.getBody() as Utilisateur).aEnseignant as Enseignant).adr_2);
			 		profilEnseignantPanel.cp.text = (((note.getBody() as Utilisateur).aEnseignant as Enseignant).cp);
			 		profilEnseignantPanel.ville.text = (((note.getBody() as Utilisateur).aEnseignant as Enseignant).ville);
			 		profilEnseignantPanel.pays.text = (((note.getBody() as Utilisateur).aEnseignant as Enseignant).pays);
			 		profilEnseignantPanel.login.text = ((note.getBody() as Utilisateur).login);
			 		profilEnseignantPanel.mdp.text = ((note.getBody() as Utilisateur).mdp);	
			 		break;
			 	}
			 	
			 	default:
			 	break;
		 	} 
		 } 
		 
		 /** 
		 * Get the loginPanel component 
		 */ 
		 private function get profilEnseignantPanel():ProfilEnseignantPanel 
		 { 
		 	return viewComponent as ProfilEnseignantPanel; 
		 }
	}
}